package Server.Model;

import java.util.ArrayList;
import java.util.List;

public class Room {
    private int idRoom;
    private int nombreJoueurPartie;
    private int nombreJoueurCourant;
    private boolean partieEnAttente; //vrai tant que la partie n'a pas commencée
    private List<Joueur> listJoueur;

    public Room (int idRoom, int nombreJoueurPartie){
        this.nombreJoueurCourant = 0;
        this.nombreJoueurPartie = nombreJoueurPartie;
        this.idRoom = idRoom;
        this.listJoueur = new ArrayList<Joueur>(nombreJoueurPartie);
        this.partieEnAttente = true;
    }

    /**
     * Permet à un joueur de rejoindre la partie
     * @param idJoueur id du joueur
     */
    synchronized public void join (int idJoueur){
        if(this.nombreJoueurCourant < this.nombreJoueurPartie){
            //S'il reste de la place on ajoute le joueur, si c'est le premier joueur alors il est dealer
            this.listJoueur.add(new Joueur(idJoueur, nombreJoueurCourant == 0));
            this.nombreJoueurCourant++;
        }
    }

    /**
     * Permet à un joueur de quitter la partie
     * @param idJoueur id du joueur
     */
    synchronized public void quit(int idJoueur){
        if(partieEnAttente){
            //Si la partie n'a pas commencée, on supprime le joueur de la liste
            for (int i = 0; i < this.nombreJoueurCourant; i++) {
                if(this.listJoueur.get(i).getIdJoueur() == idJoueur){
                    //Si on a trouvé le joueur recherché
                    if(i==0 && this.nombreJoueurCourant > 1){
                        //Si on supprime le premier joueur et qu'il y a un autre joueur, on l'assigne comme dealer
                        this.listJoueur.get(1).setDealer(true);
                    }
                    this.listJoueur.remove(i);
                    this.nombreJoueurCourant--;
                    break;
                }
            }
        }else{
            //Sinon on remplace le joueur par une IA
            for (int i = 0; i < this.nombreJoueurCourant; i++) {
                if(this.listJoueur.get(i).getIdJoueur() == idJoueur) {
                    //Si on a trouvé le joueur recherché
                    this.listJoueur.get(i).setModeIA(true);
                }
            }
        }
    }
}
